<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))){
    
    switch(getParam('operation')){
      case 's':
          save($db);
          break;
          die();
      case 'd':
          delete($db);
          break;
          die();
      case 'gc':
            getCuenta($db);
            break;
            die();            
      case 'drawEmpresa':
            drawEmpresa($db);
            die();
            break;
      case 'drawTree':
            drawTreeConta($db);
            die();
            break;
      case 'scp':
            serchCuentaPadre($db);
            die();
            break;
      case 'scs':
            SetCuentaSiguiente($db);
            die();
            break;
    }
}
//header('Location: admin_cuentas.php');

function save($db){

    header("Content-Type: text/html; charset=iso-8859-1");
    $codigo = getParam("frmCuenEdi_Codigo");
    $nombre = getParam("frmCuenEdi_Nombre");
    $origen = getParam("frmCuenEdi_Origen");
    $empresa = getParam("empresa");
    
    if( $origen == "D") {
        
        $activo = 1; 
        $pasivo = 0; 
    }
    if( $origen == "H") {
        
        $activo = 0; 
        $pasivo = 1; 
    }
    
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE codigo = '{$codigo}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    $db->free_result($qTMP);
    if( $intNumRows > 0 ) {
        $strWhere = "codigo = '{$codigo}' AND fk_empresa = '{$empresa}'";
        $db->query_update('cllg_contab_cuenta', array( 'nombre'=>"'".$nombre."'", 'activo'=>"'".$activo."'", 'pasivo'=>"'".$pasivo."'"), $strWhere);        
    }
   
   ?>
   <div class="ui-widget" style="border: 0px solid white; width: 440px; height: 35px; vertical-align: bottom;" align="center">
       <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: 35px; width: 220px;"> 
            <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
            Datos actualizados</p>
       </div>
   </div>
   <?php

}

function delete($db){
    header("Content-Type: text/html; charset=iso-8859-1");
    $codigo = getParam("frmCuenEdi_Codigo");
    $nombre = getParam("frmCuenEdi_Nombre");
    $origen = getParam("frmCuenEdi_Origen");
    $empresa = getParam("empresa");
    
    $strQuery = "DELETE FROM cllg_contab_cuenta WHERE codigo = '{$codigo}' AND fk_empresa = '{$empresa}'";
    $db->query($strQuery);
    
    ?>
    <div class="ui-widget" style="border: 0px solid white; width: 440px; height: 35px; vertical-align: bottom;" align="center">
        <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: 35px; width: 220px;"> 
            <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
            Cuenta eliminada</p>
        </div>
    </div>
    <?php

}

function getCuenta($db) {
    
    $arrResult = array();
    $empresa = getParam("empresa");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE (codigo LIKE '%{$term}%' OR nombre LIKE '%{$term}%') AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
        
    if( $rTMP = $db->fetch_array($qTMP) ) {

        do {
            $arrTMP =  array();
            $arrTMP["id"] = utf8_encode($rTMP["codigo"]);
            $arrTMP["value"] = utf8_encode($rTMP["codigo"]." - ".$rTMP["nombre"]);
            $arrTMP["nombre"] = utf8_encode($rTMP["nombre"]);
            $arrTMP["activo"] = utf8_encode($rTMP["activo"]);
            $arrTMP["pasivo"] = utf8_encode($rTMP["pasivo"]);
            $arrTMP["boolEliminar"] = fntContabilidadCuentaPuedeEliminarse($db, $empresa, $rTMP["codigo"]);
            
            array_push($arrResult,$arrTMP);
            
        } while ($rTMP = $db->fetch_array($qTMP));
        
    }
    $db->free_result($rTMP);
    
    print json_encode($arrResult);
    
}

function getContaHijas($db, $strPadre ) {

    $arrCuentas = array();
    $empresa = getParam("empresa");
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE fk_padre = '{$strPadre}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    
    while ( $rTMP = $db->fetch_array($qTMP) ) {
        
        $arrCuentas[$rTMP["codigo"]." - ".$rTMP["nombre"]] = getContaHijas($db, $rTMP["codigo"]);
        
    }
    $db->free_result($rTMP);
    
    return $arrCuentas;
    
}

function SetCuentaSiguiente($db) {
    
    $arrMacara = array();
    $arrResult = array();
    $arrCodigo = array();
    $strMascara = "";
    $empresa = getParam("empresa");
    $ccPadre = getParam("ccPadre");
    
    $strQuery = "SELECT * FROM cllg_contab_empresa WHERE codigo = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    while ($rTMP = $db->fetch_array($qTMP)) {
        $strMascara = $rTMP["mascara"];
    }
    $arrMacara = explode(",",$strMascara);
    //$arrMacara = array(1,2,3,3,3);
    $arrValorFin = array(9,99,999,9999,99999);
    
    $arrExplode = explode(".", $ccPadre);
    $intExplode = count($arrExplode);
    
    $intValorEncontrado = 1;
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE fk_padre = '{$ccPadre}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intNumRow = $db->num_rows;
    //drawDebug($intNumRow);    
    if( $intNumRow ) {

        while ($rTMP = $db->fetch_array($qTMP)) {
            
            $arrExplodeCod = explode(".",$rTMP["codigo"]);
            $intUltimo = intval(array_pop($arrExplodeCod));
            $arrCodigo[$intUltimo] = $arrExplodeCod;
            
        }
        reset($arrCodigo);
        $intFin = $arrValorFin[$arrMacara[$intExplode]-1];
        
        $intValorEncontrado = 0;
        for( $i=1; $i<=$intFin;$i++ ) {
            
            if( !isset($arrCodigo[$i]) ) {
                $intValorEncontrado = $i;
                break;  
            }
             
        }
        
    }
    $db->free_result($qTMP);
    
    $intLenValorEncontrado = strlen(strval($intValorEncontrado));
    
    $strCeros = "";
    $intFinJ = 0;
    if( $intLenValorEncontrado == $arrMacara[$intExplode] ) {
        $intFinJ = 0;
    }
    else if( $intLenValorEncontrado < $arrMacara[$intExplode] ) {
        
        $intFinJ = $arrMacara[$intExplode] - $intLenValorEncontrado;
        for( $j = 1; $j <= $intFinJ; $j++ ){
            $strCeros .= "0";
        }
        
    }
    
    $arrTMP = array();
    $arrTMP["id"] = $ccPadre.".".$strCeros.$intValorEncontrado;
    
    
    print   json_encode($arrTMP);
    
}

function fntContabilidadCuentaPuedeEliminarse($db, $empresa, $strCuenta) {
    
    $boolResultado = true;
    
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE fk_padre = '{$strCuenta}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intNumRow = $db->num_rows;
    $db->free_result($qTMP);
    
    if( $intNumRow > 0 ) {
        $boolResultado = false;
    }    
    
    $strQuery = "SELECT * FROM cllg_contab_cuenta_ajuste WHERE cuenta = '{$strCuenta}'";
    $qTMP = $db->query($strQuery);
    $intNumRow = $db->num_rows;
    $db->free_result($qTMP);
    
    if( $intNumRow > 0 ) {
        $boolResultado = false;
    }
    
    return $boolResultado;
        
}
?>